A storage array or disk array is a data storage device that includes multiple disk drives or similar persistent storage units. A storage array can allow large amounts of data to be stored in an efficient manner. A storage array also can provide redundancy to promote reliability, as in the case of a Redundant Array of Inexpensive Disks (RAID) storage array.
In addition to the disk drives or other persistent storage units, a storage array commonly also includes an enclosure, power supply, one or more controllers (typically in the form of one or more circuit boards), and interfaces to connect the storage array to an external host, such as a computer or network device. The controller includes one or more processors or similar logic that causes the storage array to read or write data to or from its persistent storage in response to requests received from an external host. A controller also commonly includes memory that acts as a buffer or temporary storage for data being transferred between the host and persistent storage. A controller further commonly includes host input/output (I/O) controllers (HICs) that interface the storage array controller with the host, and target I/O controllers (TICs) that interface the storage array controller with the disk drives or other persistent storage units. Providing a high-performance or otherwise efficient storage array controller architecture that can be implemented economically can be challenging.
One type of RAID storage array controller that has been used is based upon a combination of a substantially general-purpose processor (integrated circuit chip) and a specialized application-specific integrated circuit (ASIC). In combination with the processor, the ASIC provides optimized data paths and data transfer algorithms that promote fast and efficient data transfer between the host and the persistent storage units. Although a storage array controller architecture based upon the combination of an ASIC and general-purpose processor offers higher performance than an architecture based upon a general-purpose processor alone, a controller having the former architecture can be less economical to manufacture than a controller having the latter architecture due to the long and expensive process of developing an ASIC. However, providing a storage array controller architecture based entirely upon one or more substantially general-purpose processor and no specialized controller ASIC that provides comparable performance to an architecture having a specialized controller ASIC can be challenging. Furthermore, a storage array having a high-performance architecture can potentially be unattractive to those who seek an economical storage array.